技術問答
技術文章
iT 徵才
Tag
聊天室
2025 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
第 12 屆 iThome 鐵人賽
DAY
30
0
Software Development
安全軟體開發生命週期(SSDLC)學習筆記
系列 第
30
篇
API 開發方法
12th鐵人賽
HO-HSUN
2020-10-15 19:00:35
1810 瀏覽
分享至
總覽
API 路徑(Endpoint)的一般安全準則。
注意事項
存取控制
API路徑應遵循最小特權原則。具有受保護訊息的服務應服務於最小的群體。
具有錯誤配置的存取控制的API可能導致意外的訊息洩漏,或對敏感資料進行未經授權的惡意更改狀態的操作。
問題範例:
POST,允許用戶修改帳戶訊息,而無需檢查用戶是否擁有要修改的帳戶。
一個GET請求,該請求無需身份驗證即可返回敏感的訊息性訊息。
修正方式
確定哪些API操作應被視為敏感或公開的。
對於內部API:盡可能限制網路存取。
理想情況下,這些路徑應被限制在一個封閉的網路中。
並且要求比單一API金鑰更強的身份驗證。
例如,多因子身份驗證。
對於具有敏感訊息的公開API:
在執行請求的任何操作之前,需要進行身份驗證。
API金鑰應該是可撤銷的,也可以是可更新的。
對於提供公開訊息的公開API:
確保未通過身份驗證未通過公開API執行任何狀態更改操作。
考慮速率限制,以防止單個主機在短時間內發出太多請求。
風險等級
根據情況從低到高不等。
參考資料
https://www.owasp.org/index.php/REST_Security_Cheat_Sheet
輸入驗證
傳入的資料在解析時可能格式錯誤或被設計為導致意外行為。
根據輸入的解析方式,未驗證的輸入可能包含命令注入或其他有害操作。
修正方式
類型檢查:
確保輸入為預期的資料類型,拒絕其他任何內容。
確保輸入為預期的資料類型,拒絕其他任何內容。
長度和大小檢查:
輸入應在預期的長度或大小之內。
拒絕任何大於或小於預期的內容。
將白名單接受的內容類型
限制http方法
風險等級
根據情況從低到高不等。
驗證要求
有可能在原始請求者和API路徑之間的傳輸過程中修改請求。
修改後的請求可能導致對原始請求者的資料進行狀態更改操作。
或者導致要提供的資料不正確,修改或意外。
重播攻擊
攻擊者發送了先前的真實請求,以使操作在以後的時間再次發生。
傳輸中已修改的請求:攻擊者會在發送真實請求時修改資料。
修正方式
為每個包含敏感資料或操作的請求生成簽名或HMAC(雜湊訊息驗證碼)。
檢查請求的簽名以確定其是否真實。
簽署包含時間戳記的請求,並拒絕所有相對過舊的請求。
風險等級
根據情況從低到高不等。
參考資料
https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html#why-requests-are-signed
通用安全實踐
即使遵循API的最佳安全做法,也有可能錯過其他惡意活動。
問題範例:
沒有日誌記錄或監視丟失的安全事件
返回服務後端的堆疊紀錄或其他描述性訊息
修正方式
記錄並監視API活動。
檢測異常可以幫助發現其他地方沒有發現的惡意活動。
禁用CORS(跨源資源共享)
或者將CORS的範圍縮小到最小,以防止偽造的請求或資料洩漏。
返回模糊的錯誤回應。
向用戶返回錯誤時,請盡可能少地提供訊息。
不要返回有關服務器環境的任何訊息或調試訊息,例如堆疊紀錄。
風險等級
根據情況從低到高不等。
留言
追蹤
檢舉
上一篇
Ruby 最佳實踐
下一篇
授權和認證開發方法
系列文
安全軟體開發生命週期(SSDLC)學習筆記
共
36
篇
目錄
RSS系列文
訂閱系列文
21
人訂閱
32
密碼開發方法
33
HTTP標頭開發方法
34
防止常見的Web攻擊開發方法
35
安全密碼儲存開發方法
36
安全系統開發方法
完整目錄
熱門推薦
{{ item.subject }}
{{ item.channelVendor }}
|
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
424
組
團體組數
14
組
累計文章數
3281
篇
最後報名日
9/15
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
看更多
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
17th鐵人賽
windows
php
c#
windows server
linux
css
react
熱門問題
不知道網路紅隊的要去那加公司
Jaspersoft 的資料庫連結 出現錯誤:驅動程式無法使用安全通訊端層 (SSL) 加密建立與 SQL Server 的安全連接。
備份映像檔
Outlook 寄件備份消失問題 (已解決)
aws ec2 檢查故障問題
IIS 管理員 連線功能不見
請問有人遇過在lightsail上部屬fastapi失敗的案例?
尋求git之外的 高效能本機檔案備份 & 版本管理推薦
port-forwading到遠程網段
熱門回答
不知道網路紅隊的要去那加公司
尋求git之外的 高效能本機檔案備份 & 版本管理推薦
備份映像檔
請問有人遇過在lightsail上部屬fastapi失敗的案例?
aws ec2 檢查故障問題
熱門文章
什麼是 Signal ?
序: AI 加速編碼後,你該學什麼?
Signal 的核心概念
第12天,即時通訊軟體選擇 / 金峰滷肉飯 台北名店(台北中正)| 30天滷肉飯
第13天,雲端硬碟軟體選擇 / 吉仔冬瓜肉飯 在地排隊美食(新北土城)| 30天滷肉飯
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}